package com.hongyi.app.service;

import com.github.pagehelper.PageInfo;
import com.hongyi.app.entity.Permission;
import com.hongyi.app.entity.User;

import java.util.List;

/**
 * @author HongYi
 */
public interface UserService {


    /**根据username查询一条记录
     * @param username
     * @return
     */
    boolean checkUsername(String username);

    /**
     * 根据账号和密码进行登录业务
     *
     * @param username
     * @param password
     * @return 若登录成功，返回该用户的完整信息
     * 如账号不存在，返回id=-1的用户实体
     * 如密码错误，返回id=-2的用户实体
     */
    User login(String username, String password);

    /**
     * 通过用户id，查询角色id，再通过其角色id查询中间表的信息，
     * 最后将中间表的信息
     * @param id
     * @return
     */
    List<Permission> selectPermissionById(Integer id);

    /**
     * 根据用户ID查一条用户记录
     * @param id
     * @return
     */
    User selectById(Integer id);

    /**
     * 全查全部用户记录
     * @return
     */
    List<User> list();

    /**
     *添加一条用户记录，提前分配编号，并且同时为该用户赋予角色
     * @param user
     * @return
     */
    int insert(User user);

    /**
     * 修改用户信息，同时可以修改角色信息，编号不能修改
     * @param user
     * @return
     */
    int updateById(User user );

    /**
     * 根据Id删除用户记录
     * @param id
     * @return
     */
    int deleteById(Integer id);

    /**
     *批量删除用户记录
     * @param ids
     * @return
     */
    int deleteByIds(Integer[] ids);

    /**
     * user记录分页查询
     * @param page
     * @param size
     * @return
     */
    PageInfo<User> paging(Integer page, Integer size);
}
